home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************
- * インストールプログラム
- *************************************************************************/
-
- #include "ccilib.h"
-
- /* パレットデータ(HEwin 配色) */
- char PltDat[3][16] =
- {
- /* G R B */
- { 0, 0, 0}, /* C_BALCK, C_THROUGH */
- { 0, 0, 0}, /* C_BLUE , C_MBLACK */
- { 7, 7, 8}, /* C_RED */
- {12,12,13}, /* C_MAGENTA */
- { 6, 5, 7}, /* C_GREEN */
- { 8, 7, 9}, /* C_CYAN */
- {10, 9,11}, /* C_YELLOW */
- {11,11,12}, /* C_WHITE */
-
- { 5, 5, 6}, /* C_HBALCK */
- { 0, 0,11}, /* C_HBLUE */
- { 0,11, 0}, /* C_HRED */
- { 0,11,11}, /* C_HMAGENTA */
- {11, 0, 0}, /* C_HGEEN */
- {11, 0,11}, /* C_HCYAN */
- {11,11, 0}, /* C_HYELLOW */
- {14,14,15} /* C_HWHITE */
- };
-
- /*************************************************************************
- * 初期化
- *************************************************************************/
-
- int init()
- {
- DSP_sysInit(0); /* 表示システム初期化 */
- KBF_sysInit(); /* キーボードシステム初期化 */
- KBF_kan_off();
- FDL_sysInit(); /* ファイルダイアログ初期化 */
-
- sdk_control(0); /* サイドワーク起動禁止 */
- DSP_setPlt( PltDat ); /* パレット設定 */
-
- DSP_writePage(1);
- DSP_title("INSTALL","0.99",15,7,0,0);
- evt_setDspTime( 1, 432, 4, 7, 0 ); /* 時刻表示アイドリング処理設定 */
- SYL_clear();
- }
-
- /*************************************************************************
- * 終了
- *************************************************************************/
-
- int term()
- {
- FDL_sysEnd();
- KBF_sysEnd();
- DSP_sysEnd();
- }
-
- char *AplName = "CCI"; /* インストールするアプリの名前 */
- char *NewDir = "CCI"; /* 作成するディレクトリの名前 */
- char StartPath[256];
- char ItmPath[256]; /* アイテムファイル */
-
- char *File1[3] = /* インストールするファイル */
- {
- "cci.exp", /* 実行プログラム */
- "cci.doc", /* 説明ファイル */
- NULL
- };
-
- #define FRM_X1(_frm) _frm[0]
- #define FRM_Y1(_frm) _frm[1]
- #define FRM_X2(_frm) _frm[2]
- #define FRM_Y2(_frm) _frm[3]
-
- int item_set_newpos( short *newfrm )
- {
- int ret;
- int fpos, nextFPos;
- int etyNum;
- short icnNum;
- char ttlStr[128];
- char pathStr[128];
- char paraStr[128];
- int atrInf;
- int nextFPos;
- short frm[4];
-
- fpos = 0;
- FRM_X1(newfrm) = 0;
- FRM_Y1(newfrm) = 0;
- FRM_X2(newfrm) = 0;
- FRM_Y2(newfrm) = 0;
- while ( (fpos = ITM_GetPhysclNextFPos( ItmPath, fpos )) > 0 )
- {
- if ( ITM_GetStair( ItmPath, fpos ) == 0 )
- { /* ルートのみ */
- ret = ITM_GetItmType(ItmPath,fpos);
- switch ( ret )
- {
- case 1: /* group */
- ITM_GetGrpData(ItmPath,fpos,&etyNum,&icnNum,ttlStr,&nextFPos,frm);
- break;
- case 2: /* apllication */
- ITM_GetAplData(ItmPath,fpos,&icnNum,ttlStr,pathStr,paraStr,atrInf,frm);
- break;
- }
- if ( FRM_X1(newfrm) < FRM_X2(frm) )
- FRM_X1(newfrm) = FRM_X2(frm);
- if ( FRM_Y1(newfrm) < FRM_Y2(frm) )
- FRM_Y1(newfrm) = FRM_Y2(frm);
- }
- }
- FRM_Y1(newfrm) = FRM_Y1(newfrm) + 15;
- FRM_X2(newfrm) = FRM_X1(newfrm) + 24;
- FRM_Y2(newfrm) = FRM_Y1(newfrm) + 24;
-
- if ( FRM_X2(newfrm) > 621 )
- {
- FRM_X2(newfrm) = 621;
- FRM_X1(newfrm) = FRM_X2(newfrm) - 24;
- }
- if ( FRM_Y2(newfrm) > 410 )
- {
- FRM_Y2(newfrm) = 410;
- FRM_Y1(newfrm) = FRM_Y2(newfrm) - 24;
- }
- }
-
-
- /*************************************************************************
- * インストール
- *************************************************************************/
-
- int install()
- {
- int i, ret, len;
- char *btn;
- char *fdl;
- int drv;
- char *p, tmp[256], path[256], whare[256], src[256], dst[256];
- short frm[4];
-
- _RETRY:
- btn = MNU_allocBtn( 2 );
- MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "INSTALL : [実行]" );
- MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
- ret = MNU_selectBtn( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_LEFT, 2, btn,
- " %s のインストールを行いますか? ", AplName );
- MNU_freeBtn( btn );
- if ( ret != 1 )
- return (0);
-
- DLG_tmpMsgTime( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
- 3, "\n インストール先に移動してください。 \n" );
-
- /* インストール */
- if ( (fdl = FDL_open(0)) == NULL )
- return (-1);
- FDL_set_title( fdl,"インストール先指定");
- FDL_set_wildcard( fdl, "*.*");
- ret = FDL_start(fdl);
- if ( ret == NORMAL )
- {
- drv = FDL_get_drv(fdl);
- strcpy( whare, FDL_get_whare(fdl) );
- }
- FDL_close(fdl);
- if ( ret )
- goto _RETRY;
-
- sprintf( tmp, "%c:/%s", drv+'A', whare );
- len = strlen(tmp);
- if ( len > 0 && tmp[len-1] != '/' && tmp[len-1] != '\\' )
- {
- tmp[len++] = '/';
- tmp[len] = '\0';
- }
- sprintf( path, "%s%s", tmp, NewDir);
-
- ret = FS_isFileExist(path);
- if ( ret == 0 )
- { /* ファイルは存在しない */
- /* ディレクトリ作成確認 */
- btn = MNU_allocBtn( 2 );
- MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "MKDIR : [実行]" );
- MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
- ret = MNU_selectBtn( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
- " インストール先にディレクトリを作成します。 \n%s", path );
- MNU_freeBtn( btn );
- if ( ret != 1 )
- goto _RETRY;
- FS_mkdir(path);
- } else if ( ret == 1 )
- { /* ファイルが存在 */
- MNU_sure( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
- " %s \n インストール先に同名のファイルが存在しています。 ", path );
- goto _RETRY;
- }
-
- /* インストール先確認 --------------------------------------------*/
- btn = MNU_allocBtn( 2 );
- MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "INSTALL : [実行]" );
- MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
- ret = MNU_selectBtn( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
- " インストール先 : %s \n インストールを行いますか? ", path );
- MNU_freeBtn( btn );
- if ( ret != 1 )
- goto _RETRY;
-
- /* ファイルの複写 ------------------------------------------------*/
- ret = i = 0;
- while ( (p = File1[i++]) != NULL && ret == 0 )
- {
- SYL_puts( C_INFO, "copy %s", p );
- sprintf( src, "%s%s", StartPath, p );
- ret = FileCopy2( src, path, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN );
- }
-
- if ( ret )
- { /* error */
- MNU_sure( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
- "FILE COPY ERROR\n インストールに失敗しました。 " );
- return (-1);
- }
-
- /* アイテム登録 ------------------------------------------------*/
- SYL_puts( C_INFO, "アイテム登録を行います。" );
- sprintf( ItmPath, "%c:\\tmenu.itm", drv+'A');
- if ( FS_isFileExist(ItmPath) == 0 )
- { /* アイテムファイルま作成 */
- ITM_CreateItemFile(ItmPath);
- }
- item_set_newpos( frm );
-
- sprintf( tmp, "%s/%s", path, File1[0]);
- FS_unix2dos( dst, tmp );
- ITM_AddAplItem( ItmPath, 0, 1024, AplName, dst, "", 0, frm );
-
- SYL_puts( C_INFO, "***** Completed *****");
- DLG_tmpMsgTime( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
- C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
- 3, " インストール終了しました。 " );
-
- return (0);
- }
-
- /*************************************************************************
- * MAIN
- *************************************************************************/
-
- int main( int argc, char **argv )
- {
- char tmp[256];
-
- init();
-
- FS_setFullPathname( tmp, argv[0] );
- FS_getDnam( StartPath, tmp );
-
- install();
-
- term();
- return (0);
- }
-